package generator;

import java.util.*;
import uslugi.Lokata;
import util.KapitalizacjaEnum;
import util.MathUtil;


/*
 *  Klasa tworzaca zbior predefiniowanych (nie specjalnych)
 *  lokat, na podstawie ktorych generujemy historie
 *  lokatowa klientow banku
 * 
 * 
 */

public class GeneratorLokat {

	public List<Lokata> generujLokaty(){
		
		List<Lokata> lokaty = new ArrayList<Lokata>();
		long id = 1;
		
		String[] niskie = new String[]{"Dla kazdego", "Domowa", "Na teraz", "Pomocna", "Na kazda kieszen"};
		String[] srednie = new String[]{"Dla wymagajacyh", "Lokata Pracownicza", "Lokata perspektywiczna", "Skok w przyszlosc"};
		String[] wysokie = new String[]{"Dla odwaznych", "Tylko dla orlow", "Wielki zysk"};
		
		for(String s: niskie){
			lokaty.add(tworzNiskaLokate(id++,s));
		}
		
		for(String s:srednie){
			lokaty.add(tworzSredniaLokate(id++, s));
		}
		
		for(String s:wysokie){
			lokaty.add(tworzWysokaLokate(id++, s));
		}
		
		return lokaty;
		
	}
		
	// Niskie lokaty
	private Lokata tworzNiskaLokate(long id, String nazwa){
		
		//Oprocentowanie niskie, od 3 do 5 %
		double oproc = MathUtil.losujProcent(3, 5);
		
		// Czas trwania - krotki od 6-12msc
		int czasTr = MathUtil.losujInta(6, 12);
		
		//kapitalizacja roczna
		KapitalizacjaEnum kapitalizacja = KapitalizacjaEnum.R;
		
		// min kwota niska od 1000 do 3000
		int minKwota = MathUtil.losujInta(1000, 3000);
	
		return new Lokata(id, nazwa, oproc, czasTr, kapitalizacja, minKwota);
	}
	
	// Srednie Lokaty
	private Lokata tworzSredniaLokate(long id, String nazwa){
		//Oprocentowanie srednie, od 4 do 7 %
		double oproc = MathUtil.losujProcent(4, 7);
		
		// Czas trwania - sredni od 12-24msc
		int czasTr = MathUtil.losujInta(12, 24);
		
		//kapitalizacja  miesieczna
		KapitalizacjaEnum kapitalizacja = KapitalizacjaEnum.M;
		
		// min kwota srednia od 3000 do 7000
		int minKwota = MathUtil.losujInta(3000, 7000);
	
		return new Lokata(id, nazwa, oproc, czasTr, kapitalizacja, minKwota);
	}
	
	// Srednie Wysokie
	private Lokata tworzWysokaLokate(long id, String nazwa){
		//Oprocentowanie srednie, od 7 do 11 %
		double oproc = MathUtil.losujProcent(7, 12);
		
		// Czas trwania - dlugi od 24msc - 48msc
		int czasTr = MathUtil.losujInta(24, 48);
		
		//kapitalizacja  dzienna
		KapitalizacjaEnum kapitalizacja = KapitalizacjaEnum.D;
		
		// min kwota wysoka od 8000 do 15000
		int minKwota = MathUtil.losujInta(8000, 15000);
	
		return new Lokata(id, nazwa, oproc, czasTr, kapitalizacja, minKwota);
	}
	
	
	public static void main(String args[] ){
		
		List<Lokata> lokaty = new GeneratorLokat().generujLokaty();
		
		for(Lokata l: lokaty) System.out.println(l);
		
	}
	
}
